how execution context runs javascript code